package com.qingcheng.service;
import com.qingcheng.entity.PageResult;
import com.qingcheng.pojo.goods.Spu;
import com.qingcheng.pojo.order.Order;
import com.qingcheng.pojo.order.OrderInfoSum;
import com.qingcheng.pojo.order.Orders;
import com.qingcheng.vo.goods.LookOrderVo;
import com.qingcheng.vo.goods.OrderListVo;
import com.qingcheng.vo.goods.OrderVo;

import java.util.*;

/**
 * order业务逻辑层
 */
public interface OrderService {



    public List<Order> findAll();

    public Order queryById(String orderId);

    public PageResult<Order> findPage(int page, int size);


    public List<Order> findList(Map<String,Object> searchMap);


    public PageResult<Order> findPage(Map<String,Object> searchMap,int page, int size);

    public Map<String,Object> add(Order order);


    public void update(Order order);


    public void delete(String id);

    /**
     * 更具订单编号查询数据
     * @param id 编号
     * @return 订单数据
     */
    public Orders findById(String id);

    /**
     * 到货提醒列表
     * @return
     */
    public PageResult<OrderVo> selectAllDetermineOrder(Map<String,Object> searchMap,int page, int size);

    /**
     * 统计订单的状态的数量
     * @return
     */
    public List<Map> selectCount();

    /**
     * 批量发货
     * @param orders
     */
    public void batchSend(List<Order> orders);

    /**
     * 查询更具订单编号
     * @param searchMap
     * @return
     */
    List<Order> findByOids(Map<String,Object> searchMap);

    /**
     * 合并订单
     * @param orderId1 主订单
     * @param orderId2 从订单
     */
    void mergeOrders(String orderId1,String orderId2);

    /**
     * 差分订单
     * @param maps 订单集合
     */
    void splitOrders(List<Map> maps);

    /**
     * 查看订单详情需要的数据
     * @param id 订单编号
     * @return 订单详情数据
     */
    LookOrderVo findOrderDetails(String id);

    /**
     * 确认收货
     * @param id 订单id
     * @return
     */
    void determineOrder(String id);

    /**
     * 一键确认收货
     * @param ids 收货的数组
     */
    void determineOrde2(List<String> ids);

    /**
     * 拖货订单详情
     */
    List<Map> returnOrderItemService(String orderId);

    /**
     * 查询更具订单状态
     * @param orderInfoSum 订单信息
     * @return
     */
    OrderInfoSum findByStatus(OrderInfoSum orderInfoSum);

    /**
     * 修改订单状态
     * @param orderId
     * @param transactionId
     */
    public void updatePayStatus(String orderId,String transactionId);

    //根据用户名查询订单
    List<Order> selectOrderList(String username);

    /**
     * 关闭订单
     * @param orderId 订单编号
     */
    boolean closeOrder(String orderId,String transaction_id);

    /**
     * 根据登录的用户查询登录的用户
     * @param page 页号
     * @param size 页大小
     * @param username 用户名
     * @return 订单列表
     */
    PageResult<OrderListVo> findOrderList(int page, int size, String username,String status);

    /**
     * 修改收货人信息
     * @param map 修改的信息
     */
    void updateAddress(Map map);


    /**
     * 关闭订单
     * @param order 订单详情
     */
    void closeOrder(Order order,String message);

    /**
     * 确认收货订单列表
     * @param searchMap
     * @param page
     * @param size
     * @return
     */
    PageResult<Order> determineOrderList(Map<String, Object> searchMap, int page, int size);

    /**
     * 到货提醒列表
     * @param searchMap
     * @param page
     * @param size
     * @return
     */
    PageResult<Order> orderMessage(Map<String, Object> searchMap, int page, int size);

    /**
     * 通过时间查询当日订单数
     * @param
     * @return
     */
    Map getsum();

    /**
     * 根据订单id修改订单状态
     * @param orderId
     * @param status
     * @return
     */
    void changeOrderStatus(String orderId, String status);

    /**
     * 退货
     * @param orderId 订单表
     */
    void returnOrder2(String orderId,String type);
}

